#ifndef POINT_H
#define POINT_H

#include <iostream>

class Vector2D
{
	private:
		float x, y;
	public:
		Vector2D()
		{
			x = y = 0;
		}

		Vector2D(float _x, float _y)
		{
			x = _x;
			y = _y;
		}

		Vector2D::Vector2D(const Vector2D &point);
		
		Vector2D operator*(float scale) const
		{
			return Vector2D(x * scale, y * scale);
		}

		Vector2D operator/(float scale) const
		{
			return Vector2D(x / scale, y / scale);
		}

		Vector2D operator+(const Vector2D &other) const
		{
			return Vector2D(x + other.x, y + other.y);
		}

		Vector2D operator-(const Vector2D &other) const
		{
			return Vector2D(x - other.x, y - other.y);
		}

		Vector2D operator-() const
		{
			return Vector2D(-x, -y);
		}
};

Vector2D operator*(float scale, const Vector2D &v);
std::ostream &operator<<(std::ostream &output, const Vector2D &v);

#endif //POINT_H